//Added by Brandon York 
// 5-10-11
#pragma once

#include "Globals.h"

struct	sRotation
{
	float roll;		//X
	float pitch;	//Y
	float yaw;		//Z

	sRotation():roll(0),pitch(0),yaw(0){};

	sRotation(float x, float y, float z)
		:pitch(x),
		yaw(y),
		roll(z)
	{};

	void SetAll(float Roll,float Pitch,float Yaw)
	{
		pitch = Pitch;yaw = Yaw;roll = Roll;
	}
};

class BaseObject
{
public:
	//-Matrix Multiplication
	D3DXVECTOR3			m_fScale;
	D3DXVECTOR3			m_vPosition;
	sRotation			m_stRotation;

	//Should I draw or not
	bool				m_bDrawing;

	//Index in texture list which texture it's using
	int                 textureIndex;

	/*======|Instantiation|=========*/
	BaseObject(){}
	BaseObject(float x, float y, float z,float pitch, float roll, float yaw, int texture)
	{
		D3DXVECTOR3 T(x,y,z);
		m_vPosition = T;
		textureIndex = texture;
		m_stRotation.pitch = pitch;
		m_stRotation.roll = roll;
		m_stRotation.yaw = yaw;
	}
	~BaseObject(){}

	/*======|Update|================*/
	virtual void Update(float DeltaT){};

	/*======|Moderator|=============*/
	void RotateByDegree(float Roll, float Pitch, float Yaw)
	{
		//m_stRotation.SetAll(Roll,Pitch,Yaw);
	}

};


typedef Vector<BaseObject*> DrawList;